學習目標:
步驟指南:
MLP 基礎概念:
多層感知器是最基本的神經網路之一,它由多層神經元(感知器)組成,每個神經元都會從前一層接收輸入,經過非線性激活函數處理,並將結果傳遞到下一層。這樣的網絡結構可以幫助我們解決複雜的非線性問題。
環境設定:
pip install tensorflow keras scikit-learn
來安裝相應的庫。MNIST 資料集介紹:
MNIST 是一個包含 0 到 9 的手寫數字圖片的資料集,常被用來測試和比較機器學習演算法。每張圖像大小為 28x28 像素,總共有 60,000 張訓練圖片和 10,000 張測試圖片。
建立 MLP 模型:
使用 TensorFlow 或 Keras 建立一個簡單的 MLP 模型來訓練 MNIST 資料集。模型包含輸入層、至少一個隱藏層以及輸出層,激活函數選擇 ReLU(Rectified Linear Unit),並在輸出層使用 Softmax 函數來進行多類別分類。
範例代碼:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# 載入 MNIST 資料集
(train_X, train_y), (test_X, test_y) = mnist.load_data()
# 資料預處理
train_X = train_X.reshape((train_X.shape[0], 28 * 28)).astype('float32') / 255
test_X = test_X.reshape((test_X.shape[0], 28 * 28)).astype('float32') / 255
train_y = to_categorical(train_y)
test_y = to_categorical(test_y)
# 建立 MLP 模型
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28*28,)))
model.add(Dense(10, activation='softmax'))
# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 訓練模型
model.fit(train_X, train_y, epochs=5, batch_size=128, validation_data=(test_X, test_y))
# 評估模型
test_loss, test_acc = model.evaluate(test_X, test_y)
print(f'測試準確率: {test_acc}')
模型訓練與測試:
在這一步,你將會運行訓練過程,讓模型不斷優化。訓練過程中,模型會學習手寫數字的特徵,並能夠在測試資料上進行準確的預測。
模型評估與優化:
當模型的準確率不如預期時,嘗試調整超參數,例如增加隱藏層數量、修改激活函數,或調整學習速率。這一過程能讓你更加理解如何對 AI 模型進行調整和優化。
理解預測結果:
最終,觀察模型在測試資料上的預測結果。嘗試使用幾個手寫數字圖片進行預測,並查看模型是否能正確識別數字。這一步將讓你直觀地感受到 AI 的辨識能力。
進階學習方向: